package com.ThreadStudy.StudyDemo;
/*
*
* 龟兔赛跑
* 目的:找到谁是跑的最快的
* 本篇主要是解决怎么中断比赛: 出了直接退出的System.exit();
* 还可以才有注入式的方式控制break;
*
* run 方法由boolean flag控制是否break;run提供它的步数给Over
*
* 而flag由Over方法控制,Over提供true false
*
* 而Over由winner控制,,,第一波时获取一个对象,第二波时如果已经有对象了一直阻断交易(重点)
*
* 其它情况正常运行就行
*
* 它采用的时切入式的控制
*
*
*
*
*
* */
public class Race implements Runnable{

    // 获得胜利者,核心控制
    private static String winnner;
    @Override
    public void run() {
        for (int i = 1; i < 101; i++) {
            System.out.println(Thread.currentThread().getName()+"--->跑了"+i+"米");

            // 判断是否结束,此时切入控制
            boolean flag = gameOver(i);
            if (flag){
//                System.exit(0);
                break;
            }
        }

    }


// 判断结束
    public Boolean gameOver(int steps){
        // 获取胜利者
        if(steps>=100){
            winnner = Thread.currentThread().getName();
            System.out.println("Winner is "+winnner);
            return true;
        }

        // 不断阻断运行
        if(winnner!=null){
            return true;
        }

        return false;
    }


    public static void main(String[] args) {
        Race race = new Race();

        Thread thread = new Thread(race,"兔子");
        Thread thread1 = new Thread(race,"乌龟");

        thread.start();
        thread1.start();

    }
}
